From 49481abf620525f949d978d00cfd4114147a87db Mon Sep 17 00:00:00 2001 From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:47:28 -0600 Subject: [PATCH] simplify cmake builds (#925) * fix some Qt version dependencies. * disable strptime warning. * simplify CMakeLists.txt. * update a macos build to Xcode 13.2.1 (clang 13) * Revert "update a macos build to Xcode 13.2.1 (clang 13)" This reverts commit 2bd252713607249683db3b2dae7452c481041850. * Revert "disable strptime warning." This reverts commit b75ca3882185d7d9e3b4fd288f2b847bf2f56bfd. --- gui/CMakeLists.txt | 53 +++++++++++++++++-------------------- gui/coretool/CMakeLists.txt | 14 +++++----- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index be0d6d56d..ffa5d6b9f 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -16,14 +16,11 @@ set(CMAKE_AUTOUIC ON) # Handle the Qt rcc code generator automatically set(CMAKE_AUTORCC ON) -if(UNIX AND NOT APPLE) - set(TARGET gpsbabelfe) -else() - set(TARGET GPSBabelFE) +add_executable(gpsbabelfe WIN32 MACOSX_BUNDLE) +if(NOT UNIX OR APPLE) + set_target_properties(gpsbabelfe PROPERTIES OUTPUT_NAME GPSBabelFE) endif() -add_executable(${TARGET} WIN32 MACOSX_BUNDLE) - # Find the QtCore library find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Network SerialPort Widgets Xml REQUIRED) @@ -39,11 +36,11 @@ if (GPSBABEL_MAPPREVIEW) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WebEngineWidgets WebChannel REQUIRED) list(APPEND QT_LIBRARIES Qt${QT_VERSION_MAJOR}::WebEngineWidgets Qt${QT_VERSION_MAJOR}::WebChannel) else() - target_compile_definitions(${TARGET} PRIVATE DISABLE_MAPPREVIEW) + target_compile_definitions(gpsbabelfe PRIVATE DISABLE_MAPPREVIEW) endif() if(UNIX AND NOT APPLE) - set_target_properties(${TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY GPSBabelFE) + set_target_properties(gpsbabelfe PROPERTIES RUNTIME_OUTPUT_DIRECTORY GPSBabelFE) endif() # RESOURCES @@ -150,26 +147,26 @@ if(APPLE) set(ICON_FILE images/${MACOSX_BUNDLE_ICON_FILE}) set_source_files_properties(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - target_sources(${TARGET} PRIVATE ${SOURCES} ${HEADERS} ${ICON_FILE} ${RESOURCES}) + target_sources(gpsbabelfe PRIVATE ${SOURCES} ${HEADERS} ${ICON_FILE} ${RESOURCES}) # Info.plist has not been debugged with the cmake flow, it's a bit different than with the qmake flow. - set_target_properties(${TARGET} PROPERTIES - MACOSX_BUNDLE_GUI_IDENTIFIER org.gpsbabel.${TARGET} + set_target_properties(gpsbabelfe PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER org.gpsbabel.gpsbabelfe MACOSX_BUNDLE_ICON_FILE ${MACOSX_BUNDLE_ICON_FILE} ) else() - target_sources(${TARGET} PRIVATE ${SOURCES} ${HEADERS} ${RESOURCES}) + target_sources(gpsbabelfe PRIVATE ${SOURCES} ${HEADERS} ${RESOURCES}) endif() -target_link_libraries(${TARGET} ${QT_LIBRARIES}) +target_link_libraries(gpsbabelfe ${QT_LIBRARIES}) -get_target_property(Srcs ${TARGET} SOURCES) +get_target_property(Srcs gpsbabelfe SOURCES) message(STATUS "Sources are: \"${Srcs}\"") -get_target_property(DirDefs ${TARGET} COMPILE_DEFINITIONS) +get_target_property(DirDefs gpsbabelfe COMPILE_DEFINITIONS) message(STATUS "Defines are: \"${DirDefs}\"") -get_target_property(LnkLibs ${TARGET} LINK_LIBRARIES) +get_target_property(LnkLibs gpsbabelfe LINK_LIBRARIES) message(STATUS "Libs are: \"${LnkLibs}\"") -get_target_property(IncDirs ${TARGET} INCLUDE_DIRECTORIES) +get_target_property(IncDirs gpsbabelfe INCLUDE_DIRECTORIES) message(STATUS "Include Directores are: \"${IncDirs}\"") # FIXME: remove reliance an app.pro in package_app script. @@ -184,22 +181,22 @@ list(APPEND TRANSLATIONS gpsbabelfe_ru.ts) if(APPLE) get_target_property(_qmake_executable Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION) add_custom_target(package_app - COMMAND QMAKE=${_qmake_executable} ${CMAKE_CURRENT_SOURCE_DIR}/package_app $ $ ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND ${CMAKE_COMMAND} -E copy $/../GPSBabelFE.dmg ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${TARGET} gpsbabel coretool_lrelease + COMMAND QMAKE=${_qmake_executable} ${CMAKE_CURRENT_SOURCE_DIR}/package_app $ $ ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $/../GPSBabelFE.dmg ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS gpsbabelfe gpsbabel coretool_lrelease VERBATIM USES_TERMINAL) elseif(UNIX) get_target_property(_qmake_executable Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION) add_custom_target(package_app - COMMAND QMAKE=${_qmake_executable} ${CMAKE_CURRENT_SOURCE_DIR}/package_app $ $ ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${TARGET} gpsbabel coretool_lrelease + COMMAND QMAKE=${_qmake_executable} ${CMAKE_CURRENT_SOURCE_DIR}/package_app $ $ ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS gpsbabelfe gpsbabel coretool_lrelease VERBATIM USES_TERMINAL) elseif(WIN32) find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS LinguistTools) if (NOT Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) - message(WARNING "Qt${QT_VERSION_MAJOR}LinguistTools not found, ${TARGET} translations cannot be updated or released, and application cannot be packaged.") + message(WARNING "Qt${QT_VERSION_MAJOR}LinguistTools not found, gpsbabelfe translations cannot be updated or released, and application cannot be packaged.") endif() find_program(INNO_COMPILER NAMES iscc ISCC @@ -217,15 +214,15 @@ elseif(WIN32) endif() if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) - add_custom_target(${TARGET}_lupdate + add_custom_target(gpsbabelfe_lupdate COMMAND Qt${QT_VERSION_MAJOR}::lupdate ${SOURCES} ${FORMS} -ts ${TRANSLATIONS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM USES_TERMINAL) - add_custom_target(${TARGET}_lrelease + add_custom_target(gpsbabelfe_lrelease COMMAND Qt${QT_VERSION_MAJOR}::lrelease ${TRANSLATIONS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${TARGET}_lupdate + DEPENDS gpsbabelfe_lupdate VERBATIM USES_TERMINAL) if((NOT WINDEPLOYQT STREQUAL "WINDEPLOYQT-NOTFOUND") AND (NOT INNO_COMPILER STREQUAL "INNO_COMPILER-NOTFOUND")) @@ -235,13 +232,13 @@ elseif(WIN32) # deploy to a clean directory as different build systems create differently named debris in release. COMMAND ${CMAKE_COMMAND} -E remove_directory package COMMAND ${CMAKE_COMMAND} -E make_directory package - COMMAND ${CMAKE_COMMAND} -E copy $ package + COMMAND ${CMAKE_COMMAND} -E copy $ package COMMAND ${CMAKE_COMMAND} -E copy $ package # use --plugindir option to locate the plugins. COMMAND ${WINDEPLOYQT} --verbose 1 --plugindir package\\plugins package\\GPSBabelFE.exe package\\GPSBabel.exe # set location to location of generated setup.iss file. COMMAND ${INNO_COMPILER} /Doutput_dir=${_win_binary_path} /Dsource_dir=${_win_source_path} setup.iss - DEPENDS ${TARGET} gpsbabel ${TARGET}_lrelease coretool_lrelease + DEPENDS gpsbabelfe gpsbabel gpsbabelfe_lrelease coretool_lrelease VERBATIM USES_TERMINAL) endif() diff --git a/gui/coretool/CMakeLists.txt b/gui/coretool/CMakeLists.txt index 51092b82b..dbe37b739 100644 --- a/gui/coretool/CMakeLists.txt +++ b/gui/coretool/CMakeLists.txt @@ -2,9 +2,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) message(FATAL_ERROR "Please use CMakeLists.txt in the project root directory to generate a build system.") endif() -set(TARGET coretool) - -add_executable(${TARGET} EXCLUDE_FROM_ALL) +add_executable(coretool EXCLUDE_FROM_ALL) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets REQUIRED) @@ -16,10 +14,10 @@ list(APPEND SOURCES coretool.cc) list(APPEND HEADERS ../format.h) list(APPEND HEADERS ../formatload.h) -target_compile_definitions(${TARGET} PRIVATE GENERATE_CORE_STRINGS) -target_include_directories(${TARGET} PRIVATE ..) -target_sources(${TARGET} PRIVATE ${SOURCES} ${HEADERS}) -target_link_libraries(${TARGET} ${QT_LIBRARIES}) +target_compile_definitions(coretool PRIVATE GENERATE_CORE_STRINGS) +target_include_directories(coretool PRIVATE ..) +target_sources(coretool PRIVATE ${SOURCES} ${HEADERS}) +target_link_libraries(coretool ${QT_LIBRARIES}) # FIXME: core_strings.h generated in source directory (and under version control). # FIXME: translations updated and released in source directory (and under version control). @@ -29,7 +27,7 @@ get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/core_strings.h COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -DQTBINDIR=${_qt_bin_dir} -DCURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/coretool.cmake - DEPENDS ${TARGET} gpsbabel + DEPENDS coretool gpsbabel WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM USES_TERMINAL) -- 2.30.2